{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "pycharm": {
     "is_executing": false
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "2.1.0\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import layers\n",
    "print(tf.__version__)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "(60000, 784)   (60000,)\n",
      "(10000, 784)   (10000,)\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "(x_train,y_train),(x_test,y_test) = keras.datasets.mnist.load_data()\n",
    "x_train = x_train.reshape([x_train.shape[0],-1])\n",
    "x_test = x_test.reshape([x_test.shape[0],-1])\n",
    "print(x_train.shape,\" \",y_train.shape)\n",
    "print(x_test.shape,\" \",y_test.shape)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [
    {
     "name": "stdout",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "dense (Dense)                (None, 64)                50240     \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 64)                4160      \n",
      "_________________________________________________________________\n",
      "dense_2 (Dense)              (None, 64)                4160      \n",
      "_________________________________________________________________\n",
      "dense_3 (Dense)              (None, 10)                650       \n",
      "=================================================================\n",
      "Total params: 59,210\n",
      "Trainable params: 59,210\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ],
     "output_type": "stream"
    }
   ],
   "source": [
    "model = keras.Sequential([\n",
    "    layers.Dense(64,activation='relu',input_shape=(784,)),\n",
    "    layers.Dense(64,activation='relu'),\n",
    "    layers.Dense(64,activation='relu'),\n",
    "    layers.Dense(10,activation='softmax')\n",
    "])\n",
    "model.compile(optimizer=keras.optimizers.Adam(),\n",
    "              loss=keras.losses.SparseCategoricalCrossentropy(),\n",
    "              metrics=['accuracy'])\n",
    "model.summary()\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [],
   "source": [
    "history = model.fit(x_train,y_train,batch_size=256,epochs=100,\n",
    "                    validation_split=0.3,verbose=0)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 432x288 with 1 Axes>",
      "image/png": "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\nTkSuQmCC\n"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "plt.plot(history.history['accuracy'])\n",
    "plt.plot(history.history['val_accuracy'])\n",
    "plt.legend(['training','validation'],loc='upper left')\n",
    "plt.show()\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "traceback": [
      "\u001b[1;36m  File \u001b[1;32m\"<ipython-input-8-3fb89fb37542>\"\u001b[1;36m, line \u001b[1;32m8\u001b[0m\n\u001b[1;33m    layers.Dropout(0.2),\u001b[0m\n\u001b[1;37m         ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n"
     ],
     "ename": "SyntaxError",
     "evalue": "invalid syntax (<ipython-input-8-3fb89fb37542>, line 8)",
     "output_type": "error"
    }
   ],
   "source": [
    "from tensorflow.keras.wrappers.scikit_learn import KerasClassifier\n",
    "from sklearn.ensemble import VotingClassifier\n",
    "from sklearn.metrics import accuracy_score\n",
    "def mlp_model():\n",
    "    model = keras.Sequential([\n",
    "        layers.Dense(64,activation='relu',input_shape=(784,)),\n",
    "        layers.Dropout(0.2),\n",
    "        layers.Dense(64,activation='relu'),\n",
    "        layers.Dropout(0.2),\n",
    "        layers.Dense(64,activation='relu'),\n",
    "        layers.Dropout(0.2),\n",
    "        layers.Dense(10,activation='softmax')\n",
    "    ])\n",
    "    model.compile(optimizer=keras.optimizers.SGD(),\n",
    "                  loss=keras.losses.SparseCategoricalCrossentropy(),\n",
    "                  metrics=['accuracy'])\n",
    "    return model\n",
    "model1 = KerasClassifier(build_fn=mlp_model,epochs=100,verbose=0)\n",
    "model2 = KerasClassifier(build_fn=mlp_model,epochs=100,verbose=0)\n",
    "model3 = KerasClassifier(build_fn=mlp_model,epochs=100,verbose=0)\n",
    "\n",
    "ensemble_crf = VotingClassifier(estimators=[\n",
    "    ('model1', model1), ('model2', model2), ('model3', model3)\n",
    "], voting='soft')\n",
    "ensemble_crf.fit(x_train,y_train)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n",
     "is_executing": false
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  },
  "pycharm": {
   "stem_cell": {
    "cell_type": "raw",
    "source": [],
    "metadata": {
     "collapsed": false
    }
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}